// var i;
// var $uI_EquipInfo_UIBindings = require("./UI_EquipInfo_UIBindings");
// var $uIView = require("./UIView");
// var $excel = require("./Excel");
// var $bundleConfig = require("./BundleConfig");
// var $item_Bag_EquipItem = require("./Item_Bag_EquipItem");
// var $playerDataManager = require("./PlayerDataManager");
// var $eventManager = require("./EventManager");
// var $evenType = require("./EvenType");
// var $hallGlobalVariable = require("./HallGlobalVariable");
// var $item_Bag_CiTiao = require("./Item_Bag_CiTiao");
// var $tipsManager = require("./TipsManager");
// var $commonUtils = require("./CommonUtils");
// var $audioManager = require("./AudioManager");
// var $const_Common = require("./Const_Common");
// var $guideControl = require("./GuideControl");
// var $const_Game = require("./Const_Game");
// var $redPointControl = require("./RedPointControl");
// var $aIControl = require("./AIControl");
// var B = cc._decorator;
// var k = B.ccclass;
// var P = B.property;
// var G = B.inspector;
// var D = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.auto_ui = null;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype._show = function (e) {
//         this.args = e;
//         this.StartSet();
//     };
//     t.prototype.onEnable = function () {
//         var e = this;
//         this.scheduleOnce(function () {
//             if (
//                 $playerDataManager.PlayerDataMgr.GetGuideIndexByTaskName($const_Common.GuideName.仓库升级) ==
//                 $const_Common.UpEquipLevelGuideIndex.引导点击升级3
//             ) {
//                 var t = e;
//                 var o = t.auto_ui.btn_upLevelBtn.node;
//                 var n = o.convertToWorldSpaceAR(cc.v2(0, 0));
//                 var i = cc.size(o.width, o.height);
//                 $guideControl.GuideCtrl.ShowGuide({
//                     callBack: function () {
//                         t.ClickUpLevel();
//                         $playerDataManager.PlayerDataMgr.SetGuideIndex(
//                             $const_Common.GuideName.仓库升级,
//                             $const_Common.UpEquipLevelGuideIndex.引导战斗4
//                         );
//                         $guideControl.GuideCtrl.ShowGuide({
//                             callBack: function () {
//                                 $playerDataManager.PlayerDataMgr.SetGuideIndex(
//                                     $const_Common.GuideName.仓库升级,
//                                     $const_Common.UpEquipLevelGuideIndex.引导完结
//                                 );
//                                 if ($hallGlobalVariable.default.selfMap["战斗按钮"]) {
//                                     $guideControl.GuideCtrl.ShowOneShou({
//                                         parent: $hallGlobalVariable.default.selfMap["战斗按钮"],
//                                         isWillClickClose: !0,
//                                         x: 0,
//                                         y: 0,
//                                         getFingerCallBack: null
//                                     });
//                                     e._close();
//                                 }
//                             },
//                             sayStr: "继续挑战关卡，可解锁更强大的水果并获得大量奖励"
//                         });
//                     },
//                     sayStr: "水果升级会增加基础属性，达到特定等级会解锁新的技能",
//                     wPos: n,
//                     size: i
//                 });
//             } else {
//                 if (
//                     $playerDataManager.PlayerDataMgr.GetGuideIndexByTaskName($const_Common.GuideName.水果上阵) ==
//                     $const_Common.DressUpEquipGuideIndex.引导穿戴
//                 ) {
//                     $playerDataManager.PlayerDataMgr.SetGuideIndex(
//                         $const_Common.GuideName.水果上阵,
//                         $const_Common.DressUpEquipGuideIndex.引导完结
//                     );
//                 } else {
//                     e.AICheck();
//                 }
//             }
//         }, 0.5);
//     };
//     t.prototype.StartSet = function () {
//         var e = $excel.Excel.shuiguo(this.args.openData.shuiGuoId);
//         var t = $playerDataManager.PlayerDataMgr.GetEquipDataById(this.args.openData.shuiGuoId);
//         this.auto_ui.txt_nameLabel.string = e.name;
//         this.auto_ui.txt_decLabel.string = e.shuiguomiaoshu;
//         this.ShowCard();
//         this.ShowCiTiao();
//         this.GetAttribute();
//         this.auto_ui.sp_tianFuIcon.spriteFrame = null;
//         if (e.id != $const_Game.FruitId.杨桃忍者) {
//             this.LoadSprite(e.id);
//         }
//         if (t.isUnLock) {
//             this.auto_ui.txt_unLockLabel.string = "";
//         } else {
//             this.auto_ui.txt_unLockLabel.string = "通过章节" + e.unLock + "解锁";
//         }
//         var o = $playerDataManager.PlayerDataMgr.HallGetEquipIsDressUp(this.args.openData.shuiGuoId);
//         this.auto_ui.btn_clearBtn.node.active = o;
//         this.auto_ui.btn_upLevelBtn.node.active = t.isUnLock && t.level <= this.args.openData.upLevelDatas.length;
//         this.auto_ui.btn_useBtn.node.active = t.isUnLock && !o;
//         if (t.level > this.args.openData.upLevelDatas.length) {
//             this.auto_ui.txt_upPriceLabel.string = "MAX";
//         } else {
//             this.needData = this.args.openData.upLevelDatas[t.level - 1];
//             this.auto_ui.txt_upPriceLabel.string = this.needData.money + "";
//         }
//     };
//     t.prototype.GetAttribute = function () {
//         var e = this;
//         var t = ["最前", "随机", "轮流", "精英", "-", "随机", "最前", "-", "-"];
//         var o = $excel.Excel.shuiguo(this.args.openData.shuiGuoId);
//         var n = $hallGlobalVariable.default.GetShuiGuoCurrLevelData(this.args.openData.shuiGuoId);
//         this.auto_ui.node_attributeFather.children.forEach(function (i, a) {
//             var r = i.getChildByName("value").getChildByName("valueLabel").getComponent(cc.Label);
//             var c = i.getChildByName("value").getChildByName("addLabel").getComponent(cc.Label);
//             c.string = "";
//             r.string = "-";
//             switch (a) {
//                 case 0:
//                     if (0 != o.attack && e.args.openData.shuiGuoId != $const_Game.FruitId.辣妹子) {
//                         r.string = "" + n[0].atk;
//                         if (n[1].atk > n[0].atk) {
//                             c.string = "+" + (n[1].atk - n[0].atk);
//                         }
//                     }
//                     break;
//                 case 1:
//                     if (0 != o.attackspeed) {
//                         r.string = "" + n[0].atkSpeed;
//                         if (n[1].atkSpeed > n[0].atkSpeed) {
//                             c.string = "+" + (n[1].atkSpeed - n[0].atkSpeed);
//                         }
//                     }
//                     break;
//                 case 2:
//                     r.string = t[o.attackstate - 1];
//                     break;
//                 case 3:
//                     var s = !1;
//                     if (o.littleDesc && o.littleDesc.length > 0) {
//                         s = !0;
//                     }
//                     i.getChildByName("nameLabel").getComponent(cc.Label).string = s ? o.littleDesc : "-";
//                     if (s && n[0] && n[0].talent[0]) {
//                         var l;
//                         if (n[0].buffIsBaiFenBi) {
//                             l = "%";
//                         } else {
//                             l = "";
//                         }
//                         if (o.id == $const_Game.FruitId.榴莲王) {
//                             r.string = $excel.Excel.shuiguobuff(o.talent).probability + l;
//                         } else {
//                             o.id == $const_Game.FruitId.香蕉射手
//                                 ? (r.string = n[0].talent[1] + l)
//                                 : (r.string = n[0].talent[0] + l);
//                         }
//                         if (n[1].talent[0] > n[0].talent[0]) {
//                             var u = n[1].talent[0] - n[0].talent[0];
//                             if (-1 != (u + "").indexOf(".")) {
//                                 c.string = "+" + u.toFixed(1);
//                             } else {
//                                 c.string = "+" + u;
//                             }
//                         }
//                     }
//             }
//         });
//     };
//     t.prototype._clickListener = function (e) {
//         switch (e) {
//             case this.auto_ui.btn_upLevelBtn:
//                 this.ClickUpLevel();
//                 break;
//             case this.auto_ui.btn_clearBtn:
//                 $eventManager.EventMgr.dispatchEvent(
//                     $evenType.EVENT_TYPE.HallBagRemoveId,
//                     this.args.openData.shuiGuoId
//                 );
//                 this._close();
//                 break;
//             case this.auto_ui.btn_useBtn:
//                 if (
//                     $playerDataManager.PlayerDataMgr.dressUpArray.filter(function (e) {
//                         return 0 == e;
//                     }).length <= 0
//                 ) {
//                     $eventManager.EventMgr.dispatchEvent(
//                         $evenType.EVENT_TYPE.HallBagShowDrag,
//                         this.args.openData.shuiGuoId
//                     );
//                 } else {
//                     $playerDataManager.PlayerDataMgr.AddDressUpEquip(this.args.openData.shuiGuoId);
//                     $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.HallResetBag);
//                 }
//                 this._close();
//                 break;
//             case this.auto_ui.btn_closeBtn:
//                 this._close();
//         }
//     };
//     t.prototype.ClickUpLevel = function () {
//         if ($playerDataManager.PlayerDataMgr.globalData.gold < this.needData.money) {
//             $tipsManager.TipMgr.showToast("金币不足");
//         } else {
//             if (
//                 $playerDataManager.PlayerDataMgr.UseEquipFragments(
//                     this.args.openData.shuiGuoId,
//                     this.needData.shengjixiaohao
//                 )
//             ) {
//                 $playerDataManager.PlayerDataMgr.SubGold(this.needData.money);
//                 $playerDataManager.PlayerDataMgr.AddEquipLevel(this.args.openData.shuiGuoId);
//                 this.StartSet();
//                 if (this.args.upLevelReset) {
//                     this.args.upLevelReset();
//                 }
//                 $audioManager.AudioMgr.playEffect("effect/upLevel");
//                 this.auto_ui.node_upLevelEffect.active = !0;
//                 this.auto_ui.node_upLevelEffect.children.forEach(function (e) {
//                     e.getComponent(cc.ParticleSystem).resetSystem();
//                 });
//                 $eventManager.EventMgr.dispatchEvent(
//                     $evenType.EVENT_TYPE.MainRedPointChange,
//                     $redPointControl.RedPointType.upEquip
//                 );
//             }
//         }
//     };
//     t.prototype.ShowCard = function () {
//         return __awaiter(this, void 0, void 0, function () {
//             var e;
//             var t;
//             return __generator(this, function (o) {
//                 switch (o.label) {
//                     case 0:
//                         if (this.cardItemComp) {
//                             return [3, 2];
//                         } else {
//                             return [
//                                 4,
//                                 this._loadRes($bundleConfig.BundleNames.Home, "item/Item_bag_equipItem", cc.Prefab)
//                             ];
//                         }
//                     case 1:
//                         e = o.sent();
//                         (t = cc.instantiate(e)).parent = this.auto_ui.node_cardFather;
//                         t.setPosition(0, 0);
//                         this.cardItemComp = t.getComponent($item_Bag_EquipItem.default);
//                         o.label = 2;
//                     case 2:
//                         this.cardItemComp.StartSet(this.args.openData, !1, !1);
//                         this.cardItemComp.auto_ui.txt_nameLabel.string = "";
//                         return [2];
//                 }
//             });
//         });
//     };
//     t.prototype.ShowCiTiao = function () {
//         return __awaiter(this, void 0, void 0, function () {
//             var e;
//             var t = this;
//             return __generator(this, function (o) {
//                 switch (o.label) {
//                     case 0:
//                         if (this.ciTiaoPfb) {
//                             return [3, 2];
//                         } else {
//                             return (
//                                 (e = this),
//                                 [4, this._loadRes($bundleConfig.BundleNames.Home, "item/item_bag_ciTiao", cc.Prefab)]
//                             );
//                         }
//                     case 1:
//                         e.ciTiaoPfb = o.sent();
//                         o.label = 2;
//                     case 2:
//                         this.scheduleOnce(function () {
//                             var e = $hallGlobalVariable.default.shuiGuoCiTiaoMap.get(t.args.openData.shuiGuoId);
//                             e.sort(function (e, t) {
//                                 return e.jiesuo - t.jiesuo;
//                             });
//                             t.auto_ui.node_ciTiaoFather.children.forEach(function (e) {
//                                 return (e.active = !1);
//                             });
//                             for (var o = 0; o < e.length; o++) {
//                                 var n = e[o];
//                                 var i = void 0;
//                                 if (o < t.auto_ui.node_ciTiaoFather.childrenCount) {
//                                     i = t.auto_ui.node_ciTiaoFather.children[o];
//                                 } else {
//                                     (i = cc.instantiate(t.ciTiaoPfb)).parent = t.auto_ui.node_ciTiaoFather;
//                                 }
//                                 i.active = !0;
//                                 i.getComponent($item_Bag_CiTiao.default).StartSet(n);
//                             }
//                         });
//                         return [2];
//                 }
//             });
//         });
//     };
//     t.prototype.LoadSprite = function (e) {
//         return __awaiter(this, void 0, void 0, function () {
//             var t = this;
//             return __generator(this, function () {
//                 this._loadRes($bundleConfig.BundleNames.Common, "res/tianfuicon/tianfu_" + e, cc.SpriteFrame).then(
//                     function (e) {
//                         t.auto_ui.sp_tianFuIcon.spriteFrame = e;
//                         $commonUtils.default.LimitSpriteMaxSize(t.auto_ui.sp_tianFuIcon, 80);
//                     }
//                 );
//                 return [2];
//             });
//         });
//     };
//     t.prototype.AICheck = function () {
//         var e = this;
//         if ($aIControl.default._instance.isOpen) {
//             var t = this;
//             if (
//                 $playerDataManager.PlayerDataMgr.globalData.gold >= this.needData.money &&
//                 $playerDataManager.PlayerDataMgr.GetEquipDataById(this.args.openData.shuiGuoId).fragments >=
//                     this.needData.shengjixiaohao
//             ) {
//                 $aIControl.default._instance.ShowClickBtn(this.auto_ui.btn_upLevelBtn.node, function () {
//                     t.ClickUpLevel();
//                     t.AICheck();
//                 });
//             } else {
//                 if (this.args.isAiDressUp) {
//                     $aIControl.default._instance.ShowClickBtn(this.auto_ui.btn_useBtn.node, function () {
//                         if (
//                             $playerDataManager.PlayerDataMgr.dressUpArray.filter(function (e) {
//                                 return 0 == e;
//                             }).length <= 0
//                         ) {
//                             $eventManager.EventMgr.dispatchEvent(
//                                 $evenType.EVENT_TYPE.HallBagShowDrag,
//                                 e.args.openData.shuiGuoId
//                             );
//                         } else {
//                             $playerDataManager.PlayerDataMgr.AddDressUpEquip(e.args.openData.shuiGuoId);
//                             $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.HallResetBag);
//                             $eventManager.EventMgr.dispatchEvent($evenType.EVENT_TYPE.ResetWareHouseAI);
//                         }
//                         e._close();
//                     });
//                 }
//             }
//         }
//     };
//     __decorate([P($uI_EquipInfo_UIBindings.default)], t.prototype, "auto_ui", void 0);
//     return __decorate([k], t);
// })($uIView.default);
// exports.default = D;


// import UI_EquipInfo_UIBindings from './UI_EquipInfo_UIBindings';
// import UIView from './UIView';
// import { Excel } from './Excel';
// import { BundleNames } from './BundleConfig';
// import Item_Bag_EquipItem  from './Item_Bag_EquipItem';
// import { PlayerDataMgr } from './PlayerDataManager';
// import { EventMgrInstance } from './EventManager';
// import { EVENT_TYPE } from './EvenType';
// import HallGlobalVariable from './HallGlobalVariable';
// import Item_Bag_CiTiao from './Item_Bag_CiTiao';
// import { TipMgrInstance } from './TipsManager';
// import CommonUtils from './CommonUtils';
// import { AudioMgr } from './AudioManager';
// import { GuideCtrlInstance } from './GuideControl';
// import { RedPointType } from './RedPointControl';
// import AIControl from './AIControl';
// import { GuideName, UpEquipLevelGuideIndex, DressUpEquipGuideIndex } from './Const_Common';
// import { FruitId } from './Const_Game';

// /** 
//  * D 类
//  * 建议名称：EquipInfoClass
//  */
// const { ccclass, property, inspector } = cc._decorator;

// interface Args {
//     openData: {
//         shuiGuoId: number;
//         upLevelDatas: { money: number, shengjixiaohao: number }[];
//     };
//     upLevelReset?: () => void;
//     isAiDressUp?: boolean;
// }

// @ccclass
// export default class UI_EquipInfo extends UIView {

//     @property(UI_EquipInfo_UIBindings)
//     public auto_ui: UI_EquipInfo_UIBindings = null;

//     private args: Args;
//     private needData: any;
//     private ciTiaoPfb: cc.Prefab = null;
//     private cardItemComp: any = null;

//     /**
//      * 显示equip info
//      * @param e 参数对象
//      * 建议方法名：showEquipInfo
//      */
//     _show(e: Args): void {
//         this.args = e;
//         this.StartSet();
//     }

//     /**
//      * onEnable 生命周期方法
//      * 建议方法名：onEquipInfoEnable
//      */
//     onEnable(): void {
//         const self = this;
//         this.scheduleOnce(() => {
//             if (PlayerDataMgr.GetGuideIndexByTaskName(GuideName.仓库升级) ==
//                 UpEquipLevelGuideIndex.引导点击升级3) {
//                 const t = self;
//                 const o = t.auto_ui.btn_upLevelBtn.node;
//                 const n = o.convertToWorldSpaceAR(cc.v2(0, 0));
//                 const i = cc.size(o.width, o.height);
//                 GuideCtrlInstance.ShowGuide({
//                     callBack: function (): void {
//                         t.ClickUpLevel();
//                         PlayerDataMgr.SetGuideIndex(
//                             GuideName.仓库升级,
//                             UpEquipLevelGuideIndex.引导战斗4
//                         );
//                         GuideCtrlInstance.ShowGuide({
//                             callBack: function (): void {
//                                 PlayerDataMgr.SetGuideIndex(
//                                     GuideName.仓库升级,
//                                     UpEquipLevelGuideIndex.引导完结
//                                 );
//                                 if (HallGlobalVariable.selfMap["战斗按钮"]) {
//                                     GuideCtrlInstance.ShowOneShou({
//                                         parent: HallGlobalVariable.selfMap["战斗按钮"],
//                                         isWillClickClose: true,
//                                         x: 0,
//                                         y: 0,
//                                         getFingerCallBack: null
//                                     });
//                                     self._close();
//                                 }
//                             },
//                             sayStr: "继续挑战关卡，可解锁更强大的水果并获得大量奖励"
//                         });
//                     },
//                     sayStr: "水果升级会增加基础属性，达到特定等级会解锁新的技能",
//                     wPos: n,
//                     size: i
//                 });
//             } else {
//                 if (PlayerDataMgr.GetGuideIndexByTaskName(GuideName.水果上阵) ==
//                     DressUpEquipGuideIndex.引导穿戴) {
//                     PlayerDataMgr.SetGuideIndex(
//                         GuideName.水果上阵,
//                         DressUpEquipGuideIndex.引导完结
//                     );
//                 } else {
//                     self.AICheck();
//                 }
//             }
//         }, 0.5);
//     }

//     /**
//      * 初始化设置
//      * 建议方法名：initializeEquipInfo
//      */
//     StartSet(): void {
//         const e = Excel.shuiguo(this.args.openData.shuiGuoId);
//         const t = PlayerDataMgr.GetEquipDataById(this.args.openData.shuiGuoId);
//         this.auto_ui.txt_nameLabel.string = e.name;
//         this.auto_ui.txt_decLabel.string = e.shuiguomiaoshu;
//         this.ShowCard();
//         this.ShowCiTiao();
//         this.GetAttribute();
//         this.auto_ui.sp_tianFuIcon.spriteFrame = null;
//         if (e.id != FruitId.杨桃忍者) {
//             this.LoadSprite(e.id);
//         }
//         if (t.isUnLock) {
//             this.auto_ui.txt_unLockLabel.string = "";
//         } else {
//             this.auto_ui.txt_unLockLabel.string = "通过章节" + e.unLock + "解锁";
//         }
//         const o = PlayerDataMgr.HallGetEquipIsDressUp(this.args.openData.shuiGuoId);
//         this.auto_ui.btn_clearBtn.node.active = o;
//         this.auto_ui.btn_upLevelBtn.node.active = t.isUnLock && t.level <= this.args.openData.upLevelDatas.length;
//         this.auto_ui.btn_useBtn.node.active = t.isUnLock && !o;
//         if (t.level > this.args.openData.upLevelDatas.length) {
//             this.auto_ui.txt_upPriceLabel.string = "MAX";
//         } else {
//             this.needData = this.args.openData.upLevelDatas[t.level - 1];
//             this.auto_ui.txt_upPriceLabel.string = this.needData.money + "";
//         }
//     }

//     /**
//      * 获取属性
//      * 建议方法名：fetchAttributes
//      */
//     GetAttribute(): void {
//         const t = ["最前", "随机", "轮流", "精英", "-", "随机", "最前", "-", "-"];
//         const o = Excel.shuiguo(this.args.openData.shuiGuoId);
//         const n = HallGlobalVariable.GetShuiGuoCurrLevelData(this.args.openData.shuiGuoId);
//         this.auto_ui.node_attributeFather.children.forEach((node, idx) => {
//             const valueLabel = node.getChildByName("value").getChildByName("valueLabel").getComponent(cc.Label);
//             const addLabel = node.getChildByName("value").getChildByName("addLabel").getComponent(cc.Label);
//             addLabel.string = "";
//             valueLabel.string = "-";
//             switch (idx) {
//                 case 0:
//                     if (o.attack !== 0 && this.args.openData.shuiGuoId != FruitId.辣妹子) {
//                         valueLabel.string = `${n[0].atk}`;
//                         if (n[1].atk > n[0].atk) {
//                             addLabel.string = `+${(n[1].atk - n[0].atk)}`;
//                         }
//                     }
//                     break;
//                 case 1:
//                     if (o.attackspeed !== 0) {
//                         valueLabel.string = `${n[0].atkSpeed}`;
//                         if (n[1].atkSpeed > n[0].atkSpeed) {
//                             addLabel.string = `+${(n[1].atkSpeed - n[0].atkSpeed)}`;
//                         }
//                     }
//                     break;
//                 case 2:
//                     valueLabel.string = t[o.attackstate - 1];
//                     break;
//                 case 3:
//                     let hasLittleDesc = false;
//                     if (o.littleDesc && o.littleDesc.length > 0) {
//                         hasLittleDesc = true;
//                     }
//                     node.getChildByName("nameLabel").getComponent(cc.Label).string = hasLittleDesc ? o.littleDesc : "-";
//                     if (hasLittleDesc && n[0] && n[0].talent[0]) {
//                         let suffix;
//                         if (n[0].buffIsBaiFenBi) {
//                             suffix = "%";
//                         } else {
//                             suffix = "";
//                         }
//                         if (o.id == FruitId.榴莲王) {
//                             valueLabel.string = `${Excel.shuiguobuff(o.talent).probability}${suffix}`;
//                         } else {
//                             valueLabel.string = `${n[0].talent[0]}${suffix}`;
//                             if (o.id == FruitId.香蕉射手) {
//                                 valueLabel.string = `${n[0].talent[1]}${suffix}`;
//                             }
//                         }
//                         if (n[1].talent[0] > n[0].talent[0]) {
//                             const difference = n[1].talent[0] - n[0].talent[0];
//                             if (`${difference}`.includes(".")) {
//                                 addLabel.string = `+${difference.toFixed(1)}`;
//                             } else {
//                                 addLabel.string = `+${difference}`;
//                             }
//                         }
//                     }
//                     break;
//             }
//         });
//     }

//     /**
//      * 点击监听器
//      * 建议方法名：handleClickEvent
//      * @param e 事件名称
//      */
//     _clickListener(e: cc.Button): void {
//         switch (e) {
//             case this.auto_ui.btn_upLevelBtn:
//                 this.ClickUpLevel();
//                 break;
//             case this.auto_ui.btn_clearBtn:
//                 EventMgrInstance.dispatchEvent(
//                     EVENT_TYPE.HallBagRemoveId,
//                     this.args.openData.shuiGuoId
//                 );
//                 this._close();
//                 break;
//             case this.auto_ui.btn_useBtn:
//                 if (PlayerDataMgr.dressUpArray.filter(id => 0 == id).length <= 0) {
//                     EventMgrInstance.dispatchEvent(
//                         EVENT_TYPE.HallBagShowDrag,
//                         this.args.openData.shuiGuoId
//                     );
//                 } else {
//                     PlayerDataMgr.AddDressUpEquip(this.args.openData.shuiGuoId);
//                     EventMgrInstance.dispatchEvent(EVENT_TYPE.HallResetBag);
//                 }
//                 this._close();
//                 break;
//             case this.auto_ui.btn_closeBtn:
//                 this._close();
//         }
//     }

//     /**
//      * 点击升级按钮处理
//      * 建议方法名：handleClickUpLevel
//      */
//     ClickUpLevel(): void {
//         if (PlayerDataMgr.globalData.gold < this.needData.money) {
//             TipMgrInstance.showToast("金币不足");
//         } else {
//             if (PlayerDataMgr.UseEquipFragments(this.args.openData.shuiGuoId, this.needData.shengjixiaohao)) {
//                 PlayerDataMgr.SubGold(this.needData.money);
//                 PlayerDataMgr.AddEquipLevel(this.args.openData.shuiGuoId);
//                 this.StartSet();
//                 if (this.args.upLevelReset) {
//                     this.args.upLevelReset();
//                 }
//                 AudioMgr.playEffect("effect/upLevel");
//                 this.auto_ui.node_upLevelEffect.active = true;
//                 this.auto_ui.node_upLevelEffect.children.forEach((node) => {
//                     node.getComponent(cc.ParticleSystem).resetSystem();
//                 });
//                 EventMgrInstance.dispatchEvent(
//                     EVENT_TYPE.MainRedPointChange,
//                     RedPointType.upEquip
//                 );
//             }
//         }
//     }

//     /**
//      * 显示卡片
//      * 建议方法名：displayCard
//      */
//     async ShowCard(): Promise<void> {
//         let prefab;
//         if (this.cardItemComp) {
//             this.cardItemComp.StartSet(this.args.openData, false, false);
//             this.cardItemComp.auto_ui.txt_nameLabel.string = "";
//         } else {
//             prefab = await this._loadRes(BundleNames.Home, "item/Item_bag_equipItem", cc.Prefab);
//             const instance = cc.instantiate(prefab);
//             instance.parent = this.auto_ui.node_cardFather;
//             instance.setPosition(0, 0);
//             this.cardItemComp = instance.getComponent(Item_Bag_EquipItem);
//             this.cardItemComp.StartSet(this.args.openData, false, false);
//             this.cardItemComp.auto_ui.txt_nameLabel.string = "";
//         }
//     }

//     /**
//      * 显示词条
//      * 建议方法名：displayCiTiao
//      */
//     async ShowCiTiao(): Promise<void> {
//         if (!this.ciTiaoPfb) {
//             this.ciTiaoPfb = await this._loadRes(BundleNames.Home, "item/item_bag_ciTiao", cc.Prefab);
//         }
//         this.scheduleOnce(() => {
//             const ciTiaoData = HallGlobalVariable.shuiGuoCiTiaoMap.get(this.args.openData.shuiGuoId);
//             ciTiaoData.sort((a, b) => a.jiesuo - b.jiesuo);
//             this.auto_ui.node_ciTiaoFather.children.forEach((node) => node.active = false);
//             ciTiaoData.forEach((data, index) => {
//                 let childNode;
//                 if (index < this.auto_ui.node_ciTiaoFather.childrenCount) {
//                     childNode = this.auto_ui.node_ciTiaoFather.children[index];
//                 } else {
//                     childNode = cc.instantiate(this.ciTiaoPfb);
//                     childNode.parent = this.auto_ui.node_ciTiaoFather;
//                 }
//                 childNode.active = true;
//                 childNode.getComponent(Item_Bag_CiTiao).StartSet(data);
//             });
//         });
//     }

//     /**
//      * 加载精灵
//      * 建议方法名：loadFruitSprite
//      * @param fruitId 水果ID
//      */
//     async LoadSprite(fruitId: number): Promise<void> {
//         const spriteFrame = await this._loadRes(BundleNames.Common, `res/tianfuicon/tianfu_${fruitId}`, cc.SpriteFrame);
//         this.auto_ui.sp_tianFuIcon.spriteFrame = spriteFrame;
//         CommonUtils.LimitSpriteMaxSize(this.auto_ui.sp_tianFuIcon, 80);
//     }

//     /**
//      * AI 检查
//      * 建议方法名：checkAI
//      */
//     AICheck(): void {
//         if (AIControl._instance.isOpen) {
//             if (PlayerDataMgr.globalData.gold >= this.needData.money &&
//                 PlayerDataMgr.GetEquipDataById(this.args.openData.shuiGuoId).fragments >= this.needData.shengjixiaohao) {
//                 AIControl._instance.ShowClickBtn(this.auto_ui.btn_upLevelBtn.node, () => {
//                     this.ClickUpLevel();
//                     this.AICheck();
//                 });
//             } else {
//                 if (this.args.isAiDressUp) {
//                     AIControl._instance.ShowClickBtn(this.auto_ui.btn_useBtn.node, () => {
//                         if (PlayerDataMgr.dressUpArray.filter(id => 0 == id).length <= 0) {
//                             EventMgrInstance.dispatchEvent(
//                                 EVENT_TYPE.HallBagShowDrag,
//                                 this.args.openData.shuiGuoId
//                             );
//                         } else {
//                             PlayerDataMgr.AddDressUpEquip(this.args.openData.shuiGuoId);
//                             EventMgrInstance.dispatchEvent(EVENT_TYPE.HallResetBag);
//                             EventMgrInstance.dispatchEvent(EVENT_TYPE.ResetWareHouseAI);
//                         }
//                         this._close();
//                     });
//                 }
//             }
//         }
//     }
// }

import UIEquipInfoUIBindings from './UI_EquipInfo_UIBindings';
import UIViewBase from './UIView';
import { Excel } from './Excel';
import { BundleNames } from './BundleConfig';
import ItemBagEquipItem from './Item_Bag_EquipItem';
import { PlayerDataMgr } from './PlayerDataManager';
import { EventMgrInstance } from './EventManager';
import { EVENT_TYPE } from './EvenType';
import FruitDataManager from './HallGlobalVariable';
import ItemBagCiTiao from './Item_Bag_CiTiao';
import { TipMgr } from './TipsManager';
import CommonUtils from './CommonUtils';
import { AudioMgr } from './AudioManager';
import { GuideCtrlInstance } from './GuideControl';
import { RedPointType } from './RedPointControl';
import AICtrl from './AIControl';
import { GuideName, UpEquipLevelGuideIndex, DressUpEquipGuideIndex } from './Const_Common';
import { FruitId } from './Const_Game';

/** 
 * D 类
 * 建议名称：EquipInfoClass
 */
const { ccclass, property } = cc._decorator;

interface Args {
    openData: {
        shuiGuoId: number;
        upLevelDatas: { money: number, shengjixiaohao: number }[];
    };
    upLevelReset?: () => void;
    isAiDressUp?: boolean;
}

@ccclass
export default class ViewEquipInfo extends UIViewBase {

    @property(UIEquipInfoUIBindings)
    public auto_ui: UIEquipInfoUIBindings = null;

    private args: Args;
    private requiredLevelData: any;
    private ciTiaoPrefab: cc.Prefab = null;
    private cardComponent: ItemBagEquipItem = null;

    /**
     * 显示equip info
     * @param params 参数对象
     * 建议方法名：showEquipInfo
     */
    _show(params: Args): void {
        this.args = params;
        this.initializeEquipInfo();
    }

    /**
     * onEnable 生命周期方法
     * 建议方法名：onEquipInfoEnable
     */
    onEnable(): void {
        this.scheduleOnce(() => {
            if (PlayerDataMgr.getGuideIndexByTaskName(GuideName.EquipLevelUp) == UpEquipLevelGuideIndex.GuideClickUpgrade3) {
                this.showEquipGuide();
            } else {
                this.checkWearGuide();
            }
        }, 0.5);
    }

    /**
     * 显示引导
     */
    private showEquipGuide(): void {
        const buttonNode = this.auto_ui.btn_upLevelBtn.node;
        const buttonWorldPosition = buttonNode.convertToWorldSpaceAR(cc.v2(0, 0));
        const buttonSize = cc.size(buttonNode.width, buttonNode.height);

        GuideCtrlInstance.showGuide({
            callBack: () => {
                this.clickUpLevel();
                PlayerDataMgr.setGuideIndex(GuideName.EquipLevelUp, UpEquipLevelGuideIndex.GuideBattle4);
                GuideCtrlInstance.showGuide({
                    callBack: () => {
                        PlayerDataMgr.setGuideIndex(GuideName.EquipLevelUp, UpEquipLevelGuideIndex.GuideCompletion);
                        if (FruitDataManager.selfMap["战斗按钮"]) {
                            GuideCtrlInstance.showOneFingerGuide({
                                parent: FruitDataManager.selfMap["战斗按钮"],
                                isWillClickClose: true,
                                x: 0,
                                y: 0,
                                getFingerCallBack: null
                            });
                            this._close();
                        }
                    },
                    sayStr: "继续挑战关卡，可解锁更强大的水果并获得大量奖励"
                });
            },
            sayStr: "水果升级会增加基础属性，达到特定等级会解锁新的技能",
            wPos: buttonWorldPosition,
            size: buttonSize
        });
    }

    /**
     * 检查装备穿戴引导
     */
    private checkWearGuide(): void {
        if (PlayerDataMgr.getGuideIndexByTaskName(GuideName.FruitDressUpEquip) == DressUpEquipGuideIndex.GuideDressing) {
            PlayerDataMgr.setGuideIndex(GuideName.FruitDressUpEquip, DressUpEquipGuideIndex.GuideCompletion);
        } else {
            this.checkAI();
        }
    }
    
    /**
     * 初始化设置
     * 建议方法名：initializeEquipInfo
     */
    initializeEquipInfo(): void {
        const fruitData = Excel.shuiguo(this.args.openData.shuiGuoId);
        const equipData = PlayerDataMgr.getEquipDataById(this.args.openData.shuiGuoId);
        this.auto_ui.txt_nameLabel.string = fruitData.name;
        this.auto_ui.txt_decLabel.string = fruitData.shuiguomiaoshu;
        this.displayCard();
        this.displayCiTiao();
        this.updateAttributes();
        this.auto_ui.sp_tianFuIcon.spriteFrame = null;
        if (fruitData.id != FruitId.杨桃忍者) {
            this.loadFruitSprite(fruitData.id);
        }
        if (equipData.isUnLock) {
            this.auto_ui.txt_unLockLabel.string = "";
        } else {
            this.auto_ui.txt_unLockLabel.string = `通过章节${fruitData.unLock}解锁`;
        }
        const isEquipped = PlayerDataMgr.hallGetEquipIsDressUp(this.args.openData.shuiGuoId);
        this.auto_ui.btn_clearBtn.node.active = isEquipped;
        this.auto_ui.btn_upLevelBtn.node.active = equipData.isUnLock && equipData.level <= this.args.openData.upLevelDatas.length;
        this.auto_ui.btn_useBtn.node.active = equipData.isUnLock && !isEquipped;
        if (equipData.level > this.args.openData.upLevelDatas.length) {
            this.auto_ui.txt_upPriceLabel.string = "MAX";
        } else {
            this.requiredLevelData = this.args.openData.upLevelDatas[equipData.level - 1];
            this.auto_ui.txt_upPriceLabel.string = `${this.requiredLevelData.money}`;
        }
    }

    /**
     * 获取属性
     * 建议方法名：fetchAttributes
     */
    updateAttributes(): void {
        const attackStates = ["最前", "随机", "轮流", "精英", "-", "随机", "最前", "-", "-"];
        const fruitData = Excel.shuiguo(this.args.openData.shuiGuoId);
        const levelData = FruitDataManager.getShuiGuoCurrLevelData(this.args.openData.shuiGuoId);
        this.auto_ui.node_attributeFather.children.forEach((attrNode, index) => {
            const valueNode = attrNode.getChildByName("value");
            const valueLabel = valueNode.getChildByName("valueLabel").getComponent(cc.Label);
            const addLabel = valueNode.getChildByName("addLabel").getComponent(cc.Label);
            valueLabel.string = "-";
            addLabel.string = "";

            switch (index) {
                case 0:
                    if (fruitData.attack !== 0 && this.args.openData.shuiGuoId != FruitId.辣妹子) {
                        valueLabel.string = `${levelData[0].atk}`;
                        if (levelData[1].atk > levelData[0].atk) {
                            addLabel.string = `+${(levelData[1].atk - levelData[0].atk)}`;
                        }
                    }
                    break;
                case 1:
                    if (fruitData.attackspeed !== 0) {
                        valueLabel.string = `${levelData[0].atkSpeed}`;
                        if (levelData[1].atkSpeed > levelData[0].atkSpeed) {
                            addLabel.string = `+${(levelData[1].atkSpeed - levelData[0].atkSpeed)}`;
                        }
                    }
                    break;
                case 2:
                    valueLabel.string = attackStates[fruitData.attackstate - 1];
                    break;
                case 3:
                    this.setSpecialAttributes(attrNode, fruitData, levelData, valueLabel, addLabel);
                    break;
            }
        });
    }

    /**
     * 设置特殊属性
     */
    private setSpecialAttributes(attrNode, fruitData, levelData, valueLabel, addLabel): void {
        const hasLittleDesc = !!fruitData.littleDesc && fruitData.littleDesc.length > 0;
        attrNode.getChildByName("nameLabel").getComponent(cc.Label).string = hasLittleDesc ? fruitData.littleDesc : "-";

        if (hasLittleDesc && levelData[0] && levelData[0].talent[0]) {
            const suffix = levelData[0].buffIsBaiFenBi ? "%" : "";
            if (fruitData.id == FruitId.榴莲王) {
                valueLabel.string = `${Excel.shuiguobuff(fruitData.talent).probability}${suffix}`;
            } else {
                valueLabel.string = `${levelData[0].talent[0]}${suffix}`;
                if (fruitData.id == FruitId.香蕉射手) {
                    valueLabel.string = `${levelData[0].talent[1]}${suffix}`;
                }
            }
            if (levelData[1].talent[0] > levelData[0].talent[0]) {
                const difference = levelData[1].talent[0] - levelData[0].talent[0];
                addLabel.string = `+${difference.toFixed(1)}`;
            }
        }
    }

    /**
     * 点击监听器
     * 建议方法名：handleClickEvent
     * @param btn 事件按钮
     */
    _clickListener(btn: cc.Button): void {
        switch (btn) {
            case this.auto_ui.btn_upLevelBtn:
                this.clickUpLevel();
                break;
            case this.auto_ui.btn_clearBtn:
                this.handleClearButtonClick();
                break;
            case this.auto_ui.btn_useBtn:
                this.handleUseButtonClick();
                break;
            case this.auto_ui.btn_closeBtn:
                this._close();
                break;
        }
    }

    /**
     * 处理清除按钮点击
     */
    private handleClearButtonClick(): void {
        EventMgrInstance.emitEvent(EVENT_TYPE.HallBagRemoveId, this.args.openData.shuiGuoId);
        this._close();
    }

    /**
     * 处理使用按钮点击
     */
    private handleUseButtonClick(): void {
        if (PlayerDataMgr.dressUpArray.filter(id => id == 0).length <= 0) {
            EventMgrInstance.emitEvent(EVENT_TYPE.HallBagShowDrag, this.args.openData.shuiGuoId);
        } else {
            PlayerDataMgr.addDressUpEquip(this.args.openData.shuiGuoId);
            EventMgrInstance.emitEvent(EVENT_TYPE.HallResetBag);
        }
        this._close();
    }

    /**
     * 点击升级按钮处理
     * 建议方法名：handleClickUpLevel
     */
    clickUpLevel(): void {
        if (PlayerDataMgr.globalData.gold < this.requiredLevelData.money) {
            TipMgr.showToast("金币不足");
            return;
        }

        if (PlayerDataMgr.useEquipFragments(this.args.openData.shuiGuoId, this.requiredLevelData.shengjixiaohao)) {
            PlayerDataMgr.subtractGold(this.requiredLevelData.money);
            PlayerDataMgr.addEquipLevel(this.args.openData.shuiGuoId);
            this.initializeEquipInfo();

            if (this.args.upLevelReset) {
                this.args.upLevelReset();
            }

            AudioMgr.playSoundEffect("effect/upLevel");
            this.showUpLevelEffect();
            EventMgrInstance.emitEvent(EVENT_TYPE.MainRedPointChange, RedPointType.upEquip);
        }
    }

    /**
     * 显示升级特效
     */
    private showUpLevelEffect(): void {
        this.auto_ui.node_upLevelEffect.active = true;
        this.auto_ui.node_upLevelEffect.children.forEach((effectNode) => {
            effectNode.getComponent(cc.ParticleSystem).resetSystem();
        });
    }

    /**
     * 显示卡片
     * 建议方法名：displayCard
     */
    async displayCard(): Promise<void> {
        if (this.cardComponent) {
            this.cardComponent.startSet(this.args.openData, false, false);
            this.cardComponent.auto_ui.txt_nameLabel.string = "";
        } else {
            const prefab = await this._loadRes(BundleNames.Home, "item/Item_bag_equipItem", cc.Prefab);
            const instance = cc.instantiate(prefab);
            instance.parent = this.auto_ui.node_cardFather;
            instance.setPosition(0, 0);
            this.cardComponent = instance.getComponent(ItemBagEquipItem);
            this.cardComponent.startSet(this.args.openData, false, false);
            this.cardComponent.auto_ui.txt_nameLabel.string = "";
        }
    }

    /**
     * 显示词条
     * 建议方法名：displayCiTiao
     */
    async displayCiTiao(): Promise<void> {
        if (!this.ciTiaoPrefab) {
            this.ciTiaoPrefab = await this._loadRes(BundleNames.Home, "item/item_bag_ciTiao", cc.Prefab);
        }
        this.scheduleOnce(() => {
            this.updateCiTiaoData();
        });
    }

    /**
     * 更新词条数据
     */
    private updateCiTiaoData(): void {
        const ciTiaoData = FruitDataManager.getShuiGuoCiTiaoMap.get(this.args.openData.shuiGuoId);
        ciTiaoData.sort((a, b) => a.jiesuo - b.jiesuo);
        this.auto_ui.node_ciTiaoFather.children.forEach((node) => node.active = false);
        ciTiaoData.forEach((data, index) => {
            let ciTiaoNode:cc.Node;
            if (index < this.auto_ui.node_ciTiaoFather.childrenCount) {
                ciTiaoNode = this.auto_ui.node_ciTiaoFather.children[index];
            } else {
                ciTiaoNode = cc.instantiate(this.ciTiaoPrefab);
                ciTiaoNode.parent = this.auto_ui.node_ciTiaoFather;
            }
            ciTiaoNode.active = true;
            ciTiaoNode.getComponent(ItemBagCiTiao).initializeSettings(data);
        });
    }

    /**
     * 加载精灵
     * 建议方法名：loadFruitSprite
     * @param fruitId 水果ID
     */
    async loadFruitSprite(fruitId: number): Promise<void> {
        const spriteFrame = await this._loadRes(BundleNames.Common, `res/tianfuicon/tianfu_${fruitId}`, cc.SpriteFrame);
        this.auto_ui.sp_tianFuIcon.spriteFrame = spriteFrame;
        CommonUtils.limitSpriteSize(this.auto_ui.sp_tianFuIcon, 80);
    }

    /**
     * AI 检查
     * 建议方法名：evaluateAI
     */
    checkAI(): void {
        const aiControl = AICtrl._instance;
        if (aiControl.isOpen) {
            const { shuiGuoId } = this.args.openData;
            const equipData = PlayerDataMgr.getEquipDataById(shuiGuoId);
            
            if (PlayerDataMgr.globalData.gold >= this.requiredLevelData.money && equipData.fragments >= this.requiredLevelData.shengjixiaohao) {
                aiControl.displayClickButton(this.auto_ui.btn_upLevelBtn.node, () => {
                    this.clickUpLevel();
                    this.checkAI();
                });
            } else if (this.args.isAiDressUp) {
                aiControl.displayClickButton(this.auto_ui.btn_useBtn.node, () => {
                    if (PlayerDataMgr.dressUpArray.filter(id => id == 0).length <= 0) {
                        EventMgrInstance.emitEvent(EVENT_TYPE.HallBagShowDrag, shuiGuoId);
                    } else {
                        PlayerDataMgr.addDressUpEquip(shuiGuoId);
                        EventMgrInstance.emitEvent(EVENT_TYPE.HallResetBag);
                        EventMgrInstance.emitEvent(EVENT_TYPE.ResetWareHouseAI);
                    }
                    this._close();
                });
            }
        }
    }
}